0 Prolog
↳1 CutEliminatorProof (⇒, 0 ms)
↳2 Prolog
↳3 PrologToPiTRSProof (⇒, 0 ms)
↳4 PiTRS
↳5 DependencyPairsProof (⇔, 20 ms)
↳6 PiDP
↳7 DependencyGraphProof (⇔, 0 ms)
↳8 PiDP
↳9 PiDPToQDPProof (⇒, 0 ms)
↳10 QDP
↳11 UsableRulesReductionPairsProof (⇔, 170 ms)
↳12 QDP
↳13 MRRProof (⇔, 0 ms)
↳14 QDP
↳15 PisEmptyProof (⇔, 0 ms)
↳16 YES
hidden_flatten_in_gaa([], L, L) → hidden_flatten_out_gaa([], L, L)
hidden_flatten_in_gaa(.(.(H, T), L), S, F) → U1_gaa(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
hidden_flatten_in_gaa(.(H, T), S, .(H, L)) → U3_gaa(H, T, S, L, hidden_flatten_in_gaa(T, S, L))
U3_gaa(H, T, S, L, hidden_flatten_out_gaa(T, S, L)) → hidden_flatten_out_gaa(.(H, T), S, .(H, L))
U1_gaa(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → U2_gaa(H, T, L, S, F, hidden_flatten_in_gaa(.(H, T), Lf, F))
U2_gaa(H, T, L, S, F, hidden_flatten_out_gaa(.(H, T), Lf, F)) → hidden_flatten_out_gaa(.(.(H, T), L), S, F)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
hidden_flatten_in_gaa([], L, L) → hidden_flatten_out_gaa([], L, L)
hidden_flatten_in_gaa(.(.(H, T), L), S, F) → U1_gaa(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
hidden_flatten_in_gaa(.(H, T), S, .(H, L)) → U3_gaa(H, T, S, L, hidden_flatten_in_gaa(T, S, L))
U3_gaa(H, T, S, L, hidden_flatten_out_gaa(T, S, L)) → hidden_flatten_out_gaa(.(H, T), S, .(H, L))
U1_gaa(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → U2_gaa(H, T, L, S, F, hidden_flatten_in_gaa(.(H, T), Lf, F))
U2_gaa(H, T, L, S, F, hidden_flatten_out_gaa(.(H, T), Lf, F)) → hidden_flatten_out_gaa(.(.(H, T), L), S, F)
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L), S, F) → U1_GAA(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L), S, F) → HIDDEN_FLATTEN_IN_GAA(L, S, Lf)
HIDDEN_FLATTEN_IN_GAA(.(H, T), S, .(H, L)) → U3_GAA(H, T, S, L, hidden_flatten_in_gaa(T, S, L))
HIDDEN_FLATTEN_IN_GAA(.(H, T), S, .(H, L)) → HIDDEN_FLATTEN_IN_GAA(T, S, L)
U1_GAA(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → U2_GAA(H, T, L, S, F, hidden_flatten_in_gaa(.(H, T), Lf, F))
U1_GAA(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → HIDDEN_FLATTEN_IN_GAA(.(H, T), Lf, F)
hidden_flatten_in_gaa([], L, L) → hidden_flatten_out_gaa([], L, L)
hidden_flatten_in_gaa(.(.(H, T), L), S, F) → U1_gaa(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
hidden_flatten_in_gaa(.(H, T), S, .(H, L)) → U3_gaa(H, T, S, L, hidden_flatten_in_gaa(T, S, L))
U3_gaa(H, T, S, L, hidden_flatten_out_gaa(T, S, L)) → hidden_flatten_out_gaa(.(H, T), S, .(H, L))
U1_gaa(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → U2_gaa(H, T, L, S, F, hidden_flatten_in_gaa(.(H, T), Lf, F))
U2_gaa(H, T, L, S, F, hidden_flatten_out_gaa(.(H, T), Lf, F)) → hidden_flatten_out_gaa(.(.(H, T), L), S, F)
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L), S, F) → U1_GAA(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L), S, F) → HIDDEN_FLATTEN_IN_GAA(L, S, Lf)
HIDDEN_FLATTEN_IN_GAA(.(H, T), S, .(H, L)) → U3_GAA(H, T, S, L, hidden_flatten_in_gaa(T, S, L))
HIDDEN_FLATTEN_IN_GAA(.(H, T), S, .(H, L)) → HIDDEN_FLATTEN_IN_GAA(T, S, L)
U1_GAA(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → U2_GAA(H, T, L, S, F, hidden_flatten_in_gaa(.(H, T), Lf, F))
U1_GAA(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → HIDDEN_FLATTEN_IN_GAA(.(H, T), Lf, F)
hidden_flatten_in_gaa([], L, L) → hidden_flatten_out_gaa([], L, L)
hidden_flatten_in_gaa(.(.(H, T), L), S, F) → U1_gaa(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
hidden_flatten_in_gaa(.(H, T), S, .(H, L)) → U3_gaa(H, T, S, L, hidden_flatten_in_gaa(T, S, L))
U3_gaa(H, T, S, L, hidden_flatten_out_gaa(T, S, L)) → hidden_flatten_out_gaa(.(H, T), S, .(H, L))
U1_gaa(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → U2_gaa(H, T, L, S, F, hidden_flatten_in_gaa(.(H, T), Lf, F))
U2_gaa(H, T, L, S, F, hidden_flatten_out_gaa(.(H, T), Lf, F)) → hidden_flatten_out_gaa(.(.(H, T), L), S, F)
U1_GAA(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → HIDDEN_FLATTEN_IN_GAA(.(H, T), Lf, F)
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L), S, F) → U1_GAA(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L), S, F) → HIDDEN_FLATTEN_IN_GAA(L, S, Lf)
HIDDEN_FLATTEN_IN_GAA(.(H, T), S, .(H, L)) → HIDDEN_FLATTEN_IN_GAA(T, S, L)
hidden_flatten_in_gaa([], L, L) → hidden_flatten_out_gaa([], L, L)
hidden_flatten_in_gaa(.(.(H, T), L), S, F) → U1_gaa(H, T, L, S, F, hidden_flatten_in_gaa(L, S, Lf))
hidden_flatten_in_gaa(.(H, T), S, .(H, L)) → U3_gaa(H, T, S, L, hidden_flatten_in_gaa(T, S, L))
U3_gaa(H, T, S, L, hidden_flatten_out_gaa(T, S, L)) → hidden_flatten_out_gaa(.(H, T), S, .(H, L))
U1_gaa(H, T, L, S, F, hidden_flatten_out_gaa(L, S, Lf)) → U2_gaa(H, T, L, S, F, hidden_flatten_in_gaa(.(H, T), Lf, F))
U2_gaa(H, T, L, S, F, hidden_flatten_out_gaa(.(H, T), Lf, F)) → hidden_flatten_out_gaa(.(.(H, T), L), S, F)
U1_GAA(H, T, hidden_flatten_out_gaa) → HIDDEN_FLATTEN_IN_GAA(.(H, T))
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L)) → U1_GAA(H, T, hidden_flatten_in_gaa(L))
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L)) → HIDDEN_FLATTEN_IN_GAA(L)
HIDDEN_FLATTEN_IN_GAA(.(H, T)) → HIDDEN_FLATTEN_IN_GAA(T)
hidden_flatten_in_gaa([]) → hidden_flatten_out_gaa
hidden_flatten_in_gaa(.(.(H, T), L)) → U1_gaa(H, T, hidden_flatten_in_gaa(L))
hidden_flatten_in_gaa(.(H, T)) → U3_gaa(hidden_flatten_in_gaa(T))
U3_gaa(hidden_flatten_out_gaa) → hidden_flatten_out_gaa
U1_gaa(H, T, hidden_flatten_out_gaa) → U2_gaa(hidden_flatten_in_gaa(.(H, T)))
U2_gaa(hidden_flatten_out_gaa) → hidden_flatten_out_gaa
hidden_flatten_in_gaa(x0)
U3_gaa(x0)
U1_gaa(x0, x1, x2)
U2_gaa(x0)
Used ordering: POLO with Polynomial interpretation [POLO]:
hidden_flatten_in_gaa([]) → hidden_flatten_out_gaa
POL(.(x1, x2)) = x1 + x2
POL(HIDDEN_FLATTEN_IN_GAA(x1)) = x1
POL(U1_GAA(x1, x2, x3)) = x1 + x2 + x3
POL(U1_gaa(x1, x2, x3)) = x1 + x2 + x3
POL(U2_gaa(x1)) = x1
POL(U3_gaa(x1)) = x1
POL([]) = 2
POL(hidden_flatten_in_gaa(x1)) = x1
POL(hidden_flatten_out_gaa) = 0
U1_GAA(H, T, hidden_flatten_out_gaa) → HIDDEN_FLATTEN_IN_GAA(.(H, T))
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L)) → U1_GAA(H, T, hidden_flatten_in_gaa(L))
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L)) → HIDDEN_FLATTEN_IN_GAA(L)
HIDDEN_FLATTEN_IN_GAA(.(H, T)) → HIDDEN_FLATTEN_IN_GAA(T)
hidden_flatten_in_gaa(.(.(H, T), L)) → U1_gaa(H, T, hidden_flatten_in_gaa(L))
hidden_flatten_in_gaa(.(H, T)) → U3_gaa(hidden_flatten_in_gaa(T))
U3_gaa(hidden_flatten_out_gaa) → hidden_flatten_out_gaa
U1_gaa(H, T, hidden_flatten_out_gaa) → U2_gaa(hidden_flatten_in_gaa(.(H, T)))
U2_gaa(hidden_flatten_out_gaa) → hidden_flatten_out_gaa
hidden_flatten_in_gaa(x0)
U3_gaa(x0)
U1_gaa(x0, x1, x2)
U2_gaa(x0)
U1_GAA(H, T, hidden_flatten_out_gaa) → HIDDEN_FLATTEN_IN_GAA(.(H, T))
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L)) → U1_GAA(H, T, hidden_flatten_in_gaa(L))
HIDDEN_FLATTEN_IN_GAA(.(.(H, T), L)) → HIDDEN_FLATTEN_IN_GAA(L)
HIDDEN_FLATTEN_IN_GAA(.(H, T)) → HIDDEN_FLATTEN_IN_GAA(T)
hidden_flatten_in_gaa(.(.(H, T), L)) → U1_gaa(H, T, hidden_flatten_in_gaa(L))
hidden_flatten_in_gaa(.(H, T)) → U3_gaa(hidden_flatten_in_gaa(T))
U3_gaa(hidden_flatten_out_gaa) → hidden_flatten_out_gaa
U1_gaa(H, T, hidden_flatten_out_gaa) → U2_gaa(hidden_flatten_in_gaa(.(H, T)))
U2_gaa(hidden_flatten_out_gaa) → hidden_flatten_out_gaa
U2gaa1 > HIDDENFLATTENINGAA1 > U1GAA3 > hiddenflatteningaa1 > hiddenflattenoutgaa > U3gaa1 > U1gaa3 > .2
hidden_flatten_out_gaa=3
hidden_flatten_in_gaa_1=2
U3_gaa_1=1
U2_gaa_1=0
HIDDEN_FLATTEN_IN_GAA_1=2
._2=0
U1_gaa_3=0
U1_GAA_3=0
hidden_flatten_in_gaa(x0)
U3_gaa(x0)
U1_gaa(x0, x1, x2)
U2_gaa(x0)